package pe.gob.mimp.web.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import pe.gob.mimp.model.*;
import pe.gob.mimp.service.CasoSocialService;
import pe.gob.mimp.service.CombosService;
import pe.gob.mimp.service.MenuUsuarioService;
import pe.gob.mimp.service.UsuarioService;

@Controller
@RequestMapping(value = "/casosocialbusqueda")
public class CasoSocialBusquedaController {
	@Autowired
	private CombosService combos;
	@Autowired
	private CasoSocialService casoSocialService;
	@Autowired
	private MenuUsuarioService menuUsuarioService;
	
	@RequestMapping(method = RequestMethod.GET)
	public String showCasoForm(Model model, HttpServletRequest request) {
		CasoSocialBusqueda casoSocialBusqueda = new CasoSocialBusqueda();
		List<TablaParametrica> tipoCaso;
		List<TablaParametrica> medio;
		List<TablaParametrica> motivos = null;
		HttpSession session = request.getSession();
		List<MenuUsuario> menu;

		if (session.getAttribute("login") == null) {
			return "redirect:login";
		}
		menu = menuUsuarioService.getMenuUsuarioPorUserName((String) session.getAttribute("login"));
		tipoCaso = combos.getListaTipoCaso();
		medio = combos.getListaMedioIngreso();
		motivos = combos.getListaMotivo();
		model.addAttribute("casoSocialBusqueda", casoSocialBusqueda);
		model.addAttribute("tipoCaso", tipoCaso);
		model.addAttribute("medio", medio);
		model.addAttribute("motivos", motivos);
		model.addAttribute("menu", menu);
		model.addAttribute("opciones", menu);
		return "casosocialbusqueda";
	}

	@RequestMapping(value = "/casos", method = RequestMethod.GET)
	public @ResponseBody
	List<CasoSocialBusqueda> getMotivoss(
			@RequestParam(value = "apellidosNombres", required = false) String apellidosNombres,
			@RequestParam(value = "nroDocumento", required = false) String nroDocumento,
			@RequestParam(value = "idTipocaso", required = false) Long idTipocaso,
			@RequestParam(value = "idMotivo", required = false) Long idMotivo,
			@RequestParam(value = "idMedio", required = false) Long idMedio,
			@RequestParam(value = "busqueda", required = false) Long busqueda,
			HttpServletRequest request) {
		CasoSocialBusqueda casoSocialBusqueda = new CasoSocialBusqueda();
		HttpSession session = request.getSession();

		if (session.getAttribute("login") == null) {
			return null;
		}
		System.out.println(apellidosNombres);
		System.out.println(nroDocumento);
		System.out.println(idTipocaso);
		System.out.println(idMotivo);
		System.out.println(idMedio);
		casoSocialBusqueda.setApellidosNombres(apellidosNombres);
		casoSocialBusqueda.setNroDocumento(nroDocumento);
		casoSocialBusqueda.setIdMedio(idMedio);
		casoSocialBusqueda.setIdMotivo(idMotivo);
		casoSocialBusqueda.setIdTipocaso(idTipocaso);
		if (busqueda == 1) {
			return casoSocialService.buscaCasoSocial(casoSocialBusqueda);
		} else {
			return null;
		}
	}
        
        @RequestMapping(value = "/ejecutarreporte", method = RequestMethod.GET)
	public ModelAndView generaCasoPDF(HttpServletRequest request)
			throws Exception {
		ModelAndView mv = null;
		try {
			Map<String, Object> model = new HashMap<String, Object>();
			model.put("bindidcaso", request.getParameter("idCasosocial").toString());
			mv = new ModelAndView("pdfReportSeguimiento", model);
		} catch (Exception e) {
			System.out.println("Exception Occured  profileHandler-> " + e);
		}
		return mv;
	}
        
}
